package com.sky.config;

import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import com.sky.utils.StpUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

@Configuration
public class SaTokenConfigure {
    // Sa-Token 整合 jwt (Simple 简单模式)
    @Bean
    public StpLogic getStpLogicJwt() {
        return new StpLogicJwtForSimple();
    }
    @Bean
    @Primary
    public void setSaTokenConfig() {
        // 设定 StpUtil 使用的 SaTokenConfig 配置参数对象
        SaTokenConfig config1 = new SaTokenConfig();
        config1.setTokenName("token");             // token 名称（同时也是 cookie 名称）
        config1.setTimeout(30 * 24 * 60 * 60);       // token 有效期（单位：秒），默认30天，-1代表永不过期
        config1.setActiveTimeout(-1);              // token 最低活跃频率（单位：秒），如果 token 超过此时间没有访问系统就会被冻结，默认-1 代表不限制，永不冻结
        config1.setIsConcurrent(true);               // 是否允许同一账号多地同时登录（为 true 时允许一起登录，为 false 时新登录挤掉旧登录）
        config1.setIsShare(true);                    // 在多人登录同一账号时，是否共用一个 token （为 true 时所有登录共用一个 token，为 false 时每次登录新建一个 token）
        config1.setTokenStyle("uuid");               // token 风格
        config1.setIsLog(true);                     // 是否输出操作日志
        config1.setJwtSecretKey("njavhfvknanfhckfvvbvhfnoahlsvknfjh");//配置jwt秘钥
        StpUtil.stpLogic.setConfig(config1);

        // 设定 StpUserUtil 使用的 SaTokenConfig 配置参数对象
        SaTokenConfig config2 = new SaTokenConfig();
        config2.setTokenName("authentication");             // token 名称（同时也是 cookie 名称）
        config2.setTimeout(30 * 24 * 60 * 60);       // token 有效期（单位：秒），默认30天，-1代表永不过期
        config2.setActiveTimeout(-1);              // token 最低活跃频率（单位：秒），如果 token 超过此时间没有访问系统就会被冻结，默认-1 代表不限制，永不冻结
        config2.setIsConcurrent(true);               // 是否允许同一账号多地同时登录（为 true 时允许一起登录，为 false 时新登录挤掉旧登录）
        config2.setIsShare(true);                    // 在多人登录同一账号时，是否共用一个 token （为 true 时所有登录共用一个 token，为 false 时每次登录新建一个 token）
        config2.setTokenStyle("uuid");               // token 风格
        config2.setIsLog(true);                     // 是否输出操作日志
        config2.setJwtSecretKey("njavhfvknanfhckfvvbvhfnoahlsvknfjh");//配置jwt秘钥
        StpUserUtil.stpLogic.setConfig(config2);
    }

//    @Bean
//    @Primary
//    public SaTokenConfig getSaTokenConfigPrimary() {
//        SaTokenConfig config = new SaTokenConfig();
//        config.setTokenName("satoken");             // token 名称（同时也是 cookie 名称）
//        config.setTimeout(30 * 24 * 60 * 60);       // token 有效期（单位：秒），默认30天，-1代表永不过期
//        config.setActiveTimeout(-1);              // token 最低活跃频率（单位：秒），如果 token 超过此时间没有访问系统就会被冻结，默认-1 代表不限制，永不冻结
//        config.setIsConcurrent(true);               // 是否允许同一账号多地同时登录（为 true 时允许一起登录，为 false 时新登录挤掉旧登录）
//        config.setIsShare(true);                    // 在多人登录同一账号时，是否共用一个 token （为 true 时所有登录共用一个 token，为 false 时每次登录新建一个 token）
//        config.setTokenStyle("uuid");               // token 风格
//        config.setIsLog(false);                     // 是否输出操作日志
//        return config;
//    }
}
